package com.lxx.jmb2c.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;

/**
 * 后台角色分组表实体类
 * 
 * 对应数据库表：tb_admin_role
 * 
 * 功能说明：
 * 1. 定义管理员角色信息
 * 2. 管理角色权限
 * 3. 支持角色软删除
 * 
 * 安全注意事项：
 * 1. 权限字段(rights)应该加密存储
 * 2. 角色分配需要严格权限控制
 * 3. 删除操作应该是逻辑删除
 * 
 * 最佳实践：
 * 1. 权限设计采用RBAC模型
 * 2. 角色名称应该具有描述性
 * 3. 权限字符串应该结构化
 * 
 * 使用示例：
 * // 创建新角色
 * AdminRole role = new AdminRole();
 * role.setName("超级管理员");
 * role.setRights("user:*,order:*");
 * role.setIsDel(false);
 * 
 * @author lxx
 * @since 2025-07-07
 */
@Data
@TableName("tb_admin_role")
public class AdminRole implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 角色ID
     * 数据库列：id (主键，自增)
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 角色名称
     * 数据库列：name
     * 要求：
     * - 唯一
     * - 长度不超过50字符
     * - 具有描述性
     */
    private String name;

    /**
     * 权限字符串
     * 数据库列：rights
     * 格式建议：
     * - 模块:操作 如 "user:add,user:delete"
     * - 可以用JSON格式存储复杂权限
     */
    private String rights;

    /**
     * 删除状态
     * 数据库列：is_del
     * 取值：
     * - true: 已删除
     * - false: 正常
     */
    private Boolean isDel;
}
